package lol.clann.minecraft.springboot.api.spi.plugin;

import java.util.HashSet;
import java.util.Set;

/**
 * 插件实现这个类,并暴露成java serviceloader,才能被框架发现
 *
 * 不强制要求实现这个
 *
 * 但只有实现了这个才支持配置,数据库,remap等功能
 *
 * 强制要求实现类只实现要求的接口,不要做其他任何事情,避免影响remap
 *
 * @author pyz
 * @date 2019/5/2 3:16 PM
 */
public interface PluginDefine {
    /**
     * 插件ID,唯一标识一个插件
     *
     * @return
     */
    String getId();

    /**
     * 插件展示名
     *
     * @return
     */
    String getDisplayName();

    /**
     * 插件版本
     *
     * @return
     */
    default String getVersion() {
        return "0.0.1";
    }

    /**
     * 依赖的其他插件
     * @return
     */
    default Set<String> getPluginDepends() {
        return new HashSet<>();
    }

    /**
     * 插件的包路径
     *
     * @return
     */
    default Set<String> getBasePackages() {
        Set<String> set = new HashSet<>();
        set.add(this.getClass().getPackage().getName());
        return set;
    }
}
